from typing import List, TypeVar, Type, Generic
 
T = TypeVar('T')
 
class TypedList(Generic[T]):
    '''
    在Python中，如果你想要限制列表中元素的类型，你可以使用类型注解（Type Annotations）和类型检查器（如mypy）来实现。
    但是，Python的内置数据结构list本身并不支持限制元素的类型。你可以通过自定义一个容器类来实现这个功能。
    '''
    def __init__(self, item_type: Type[T], items: List[T] = None):
        self._item_type = item_type
        self._items = [] if items is None else list(items)
        self._check_types()
 
    def _check_types(self):
        for item in self._items:
            if not isinstance(item, self._item_type):
                raise TypeError(f"Expected type {self._item_type}, got {type(item)}")
 
    def append(self, item: T):
        if not isinstance(item, self._item_type):
            raise TypeError(f"Expected type {self._item_type}, got {type(item)}")
        self._items.append(item)
 
    def __getitem__(self, index):
        return self._items[index]
 
    def __len__(self):
        return len(self._items)